package servidor;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 *
 */

import Protocolo.ConexionServidor;
import Protocolo.ConexionServidorACliente;
import Protocolo.ObservarProtocolo;
import java.util.ArrayList;


public class Servidor extends Thread implements ObservarProtocolo
{

    private ListaUsuarios usuarios;
    private ConexionServidor conexion;
    private ConexionServidorACliente csac;

    public Servidor(ConexionServidor cs){
        usuarios= new ListaUsuarios();
        conexion = cs;
    }

    @Override
    public void run(){
        while(true){
            try{
                csac = conexion.recibirConexion();
                csac.agregarObservador(this);
                aceptarUsuario(csac);
            }
            catch(Exception e){
                e.printStackTrace();
            }
        }
    }

    public void aceptarUsuario(ConexionServidorACliente conexionSC){
       Usuario u;
        usuarios.getLista().add(u= new Usuario(conexionSC));
        System.out.println("Conexion recibida");
    }

    public void recibirMensaje(String usuario,String mensaje){
        System.out.println(usuario+ " dice: "+mensaje);
            //usuarios.verificarUsuarios();
           for (int i=0;i< usuarios.getLista().size(); i++)
           {
                usuarios.getLista().get(i).enviarMensaje(usuario+":"+mensaje);
           }
           Log n= new Log();
           n.guardarMensaje(usuario+": "+mensaje);
    }




    public ArrayList  mandarListaUsuario()
    {
         return usuarios.getLista();
    }
    public void enviarListaUsuarios(){
        System.out.println(usuarios.getLista().size());
        for (int i = 0; i < usuarios.getLista().size(); i++) {
            usuarios.getLista().get(i).getS().enviarLista(usuarios.getLista().get(i).getNombre());
        }

    }
    public void notificarLista(String lista) {
       //Este metodo esta vacio
    }
}